package com.example.ramon.projetocinemovies;

import org.json.JSONArray;
import org.json.JSONObject;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

/**
 * Created by ramon on 25/10/14.
 */
public class FilmesHttp {


    public static List<Filme> downloadLivros(){
        try {
            URL url = new URL("https://code.google.com/p/projeto-cine-movie" +
                    "/source/browse/cineMovies.json?name=master");
            HttpURLConnection conexao = (HttpURLConnection)
                    url.openConnection();
            conexao.setReadTimeout(10 * 1000);
            conexao.setConnectTimeout(15 * 1000);
            conexao.setDoInput(true);
            conexao.setRequestMethod("GET");
            conexao.connect();

            if (conexao.getResponseCode() == HttpURLConnection.HTTP_OK){
                return parseJson(conexao.getInputStream());
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    private static List<Filme> parseJson(InputStream inputStream) throws Exception {
        List<Filme> filmes = new ArrayList<Filme>();



        JSONObject jsonEditora = new JSONObject(streamToString(inputStream));
        JSONArray jsonCategorias = jsonEditora.getJSONArray("novatec");
        for (int i = 0; i < jsonCategorias.length(); i++){
            JSONObject jsonCategoria = jsonCategorias.getJSONObject(i);
            JSONArray jsonLivros = jsonCategoria.getJSONArray("livros");
            for (int j = 0; j < jsonLivros.length(); j++) {
                JSONObject jsonLivro = jsonLivros.getJSONObject(j);

                String titulo = jsonLivro.getString("titulo");
                String autor = jsonLivro.getString("autor");
                String capa = jsonLivro.getString("capa");
                int ano = jsonLivro.getInt("ano");

                filmes.add(new Filme());
            }
        }
        return filmes;
    }

    private static String streamToString(InputStream inputStream) throws IOException {
        byte[] buffer = new byte[1024];
        int lidos;
        ByteArrayOutputStream bufferzao = new ByteArrayOutputStream();
        while ((lidos = inputStream.read(buffer)) > -1){
            bufferzao.write(buffer, 0, lidos);
        }
        return new String(bufferzao.toByteArray());
    }

}
